package model

type ClusterModel struct {
	ID          int             `json:"id"`
	Name        string          `json:"name"`
	Type        string          `json:"type"`
	Status      string          `json:"status"`
	KubeVersion string          `json:"kube_version"`
	Nodes       []NodeDescModel `json:"node"`
}

type ClusterInfo struct {
	ID          int             `json:"id"`
	Name        string          `json:"name"`
	Type        string          `json:"type"`
	Status      string          `json:"status"`
	KubeVersion string          `json:"kube_version"`
	Nodes       []NodeDescModel `json:"node"`
	NameSpaces  []NameSpaceInfo `json:"namespaces"`
}

type ClusterMetaInfo struct {
	ClusterModel ClusterModel    `json:"cluster_model"`
	NameSpaces   []NameSpaceInfo `json:"namespaces"`
}

type NameSpaceInfo struct {
	Name   string `json:"name"`
	Status string `json:"status"`
}

type NodeDescModel struct {
	Name    string `json:"name"`
	Status  string `json:"status"`
	Role    string `json:"role"`
	IP      string `json:"ip"`
	Version string `json:"version"`
}

type AddClusterResponse struct {
	Message string `json:"message"`
}

type DeleteClusterResponse struct {
	Message string `json:"message"`
}

type ClusterResourceRatioModel struct {
	ResourceRatioMap map[string]ResourceRatio `json:"resource_ratio_map"`
}

type ResourceRatio struct {
	Used  float64 `json:"used"`
	Total float64 `json:"total"`
	Unit  string  `json:"unit"`
}

type ScheduleRecord struct {
	Name       string `json:"name"`
	Namespace  string `json:"namespace"`
	Status     string `json:"status"`
	CreateTime string `json:"create_time"`
	Uid        string `json:"uid"`
}

// ScheduleRecordDetail 嵌套结构体
type ScheduleRecordDetail struct {
	Pods          []PodNodeBind            `json:"pods"`
	Dependencies  []PodDependency          `json:"dependencies"`
	NodeLatencies map[string]LatencyDetail `json:"node_latencies"`
}

type PodNodeBind struct {
	Uid      string `json:"uid"`
	Name     string `json:"podName"`
	NodeName string `json:"nodeName"`
}

type PodDependency struct {
	P1 string `json:"p1"`
	P2 string `json:"p2"`
}

type LatencyDetail struct {
	Mi  float64 `json:"min"`
	Ma  float64 `json:"max"`
	Avg float64 `json:"avg"`
}
